iT邦幫忙

2

Python讀取MySQL資料庫bool值後,判斷式的有趣問題

  • 分享至 

  • xImage
  •  

近期遇到一個 Python 的有趣現象,不知道放在哪好,就寫在這裡吧。
話說一般小弟在寫 Python 的判斷式時,常會把『==』跟『is』混用。
例如:
設定 aa = True
這時判斷式『aa == True』跟『aa is True』,兩者得到的答案都是相同的『True』。
有趣的是,近期小弟寫一個程式從 MySQL 資料庫讀取 bool 值
明明應該為 True 呀,但用 is True 卻得到『False』,搞得最終結果與預想值天差地遠。這倒底是哪裡出了問題呢?
經測試發現:
從 MySQL 資料庫讀取 bool 值,不論是 True 或 False,判斷式用 is 結果都是 False。
要使用『==』符號做判斷,才會得到正確的結果。
會有這種現象的原因是
MySQL 讀取 bool 值時,用 1 表示 True、0 表示 False,並沒有獨立的 True 或 False 值。
而 Python 除了有 True、False 之外。
在使用 == 符號做判斷時,也會把 0 當成 False、把 1 當成 True。
但當使用 is 做判斷時,1 就是 1、True 就是 True,兩個就逕渭分明、決不混淆了。
結論:
Python 從 MySQL 資料庫讀取 bool 值,要寫成判斷式時
應該使用 == 或 != 符號做判斷,不可以用 is 做判斷。
https://ithelp.ithome.com.tw/upload/images/20220310/20106701lGwUFf3E6T.jpg


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言